#include <vector>
#include <fstream>
#include <iostream>

using namespace std;

// 农夫的调温命令
int cmd(int d/*牛的期望温度 - 当前温度*/) {
  if (d > 0) {
    return 1;
  }
  else if (d < 0) {
    return -1;
  }
  
  return 0;
}

int main(int argc, char const *argv[])
{
  // 处理输入
  ifstream ifs("AirCowditioning.in");

  int n = 0;
  ifs >> n;

  vector<int> target(n, 0);
  for (int i = 0; i < n; ++i) {
    ifs >> target[i];
  }

  vector<int> current(n, 0);
  for (int i = 0; i < n; ++i) {
    ifs >> current[i];
  }

  // ...
  vector<int> diff(n, 0);
  // 计算每一个牛棚位置期望和当前的温度差
  for (int i = 0; i < n; ++i) {
    diff[i] = target[i] - current[i];
  }

  /*
   1 5 3 3 4 t
   1 2 2 2 1 c
   -----------
   0 3 1 1 3 diff
   0 2 0 0 2 1次
   0 1 0 0 2 2次
   0 0 0 0 2 3次
   0 0 0 0 1 4次
   0 0 0 0 0 5次
     ^     ^ pos
     firstNonZero
     找从这个位置开始，后续有多少牛棚可以一起调温
     把接下来的每一个位置的温差，传递给 cmd，cmd 返回值相同的位置，可以一起调温
   0 - 满足
   + - 升温
   - - 降温
   */

  int firstNonZero = 0; // diff 中第一个不为零的元素的位置
  int result = 0; // 执行调温命令的次数

  while (true) {
    // 在 diff 里找第一个不为 0 的元素的位置
    while (firstNonZero < n && diff[firstNonZero] == 0) {
      ++firstNonZero;
    }

    // firstNonZero
    if (firstNonZero == n) {
      // diff 中所有元素都是 0
      // 所有牛的温度都满足了
      break;
    }

    int pos = firstNonZero;
    while (pos + 1 < n && cmd(diff[pos + 1]) == cmd(diff[firstNonZero])) {
      // pos 这个位置是可以和 firstNonZero 一起调温的
      ++pos;
    }

    // John 应用一次调温命令之后的结果
    for (int i = firstNonZero; i <= pos; ++i) {
      if (diff[i] > 0) {
        --diff[i];
      }
      else if (diff[i] < 0) {
        ++diff[i];
      }
    }

    ++result;
  }

  ofstream ofs("AirCowditioning.out");
  ofs << result;

  return 0;
}
